#pragma once
#include <systemc>
#include <string>
#include <map>

#define ROOT_DIR "SystemC2XML"

using namespace sc_core;
using namespace sc_dt;
using namespace std;


#include "ModuleData.h"
#include "ChannelData.h"
#include "ChannelDataInfo.h"

/*This class contains the declarations and prototypes for export.cpp
*/
class Export
{
private:
	list<ChannelDataInfo*> mPortInterface;
	list<ChannelDataInfo*> mInterfaceList;
	void createChannelData();
	ModuleData* createModuleDataTree(sc_object* top);
	map<string,string> mTypeMap;

public:
	Export(string typeDocFileName = "types.xml");
	void write(string outputName, sc_object* top);
	void clear();
	~Export();
	
protected:
	virtual void generateOutput(string outputName) =0;
	ModuleData* mParentModuleData;
};